﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;


using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;

using RRHH.Competencias.Entities;
using RRHH.Competencias.Controladores;
using System.Data;


namespace WebSite
{
    public partial class RadarChartImpresion : System.Web.UI.Page
    {
        protected ReportDocument reporte;

        protected void Page_Load ( object sender, EventArgs e )
        {
            if (!Page.IsPostBack)
            {
                Proceso proceso = null;
                long idProceso;

                if (!string.IsNullOrEmpty( Request.QueryString["IdProceso"] )
                    && long.TryParse( Request.QueryString["IdProceso"], out idProceso ))
                {
                    proceso = new Proceso();
                    proceso.Id = idProceso;
                }

                Colaborador colaborador = null;
                long idColaborador;

                if (!string.IsNullOrEmpty( Request.QueryString["IdColaborador"] )
                   && long.TryParse( Request.QueryString["IdColaborador"], out idColaborador ))
                {
                    colaborador = new Colaborador();
                    colaborador.IdColaborador = idColaborador;
                }

                TipoCapacidad tipo = null;
                long idTipoCapacidad;

                if (!string.IsNullOrEmpty( Request.QueryString["IdTipoCapacidad"] )
                   && long.TryParse( Request.QueryString["IdTipoCapacidad"], out idTipoCapacidad ))
                {
                    tipo = new TipoCapacidad();
                    tipo.Id = idTipoCapacidad;
                }

                this.GenerarReporte( proceso, colaborador, tipo );
            }
        }

        private void GenerarReporte ( Proceso proceso, Colaborador colaborador, TipoCapacidad tipo )
        {
            GestorRadarChart gRadarChart = new GestorRadarChart();
            DataTable tablaResultado = null;
            RadarChart chart;

            try
            {
                if (proceso != null && colaborador != null)
                {
                    chart = gRadarChart.ObtenerDatosRadarChart( proceso, colaborador );
                }
                else
                {
                    if (colaborador != null)
                    {
                        chart = gRadarChart.ObtenerDatosRadarChart( colaborador );
                    }
                    else
                    {
                        chart = gRadarChart.ObtenerDatosRadarChart( proceso );
                    }
                }

                tablaResultado = gRadarChart.GenerarTabla( chart, tipo );
            }
            catch (Exception ex)
            {
                Response.Write( "No se pudo generar el reporte. " + ex.Message );
                return;
            }

            tablaResultado.DefaultView.RowFilter = "TipoCapacidadId = 1";

            reporte = new ReportDocument();
            reporte.Load( Server.MapPath( "Reportes\\RptRadarChartTipoCapacidad.rpt" ) );
            reporte.SetDataSource( tablaResultado );

            reporte.ExportToHttpResponse( ExportFormatType.PortableDocFormat, this.Response, false, "radarchart" );
        }
    }
}